為什麼這篇::class鄉民發文收入到精華區:因為在::class這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者cory8249 (Cory)看板C_and_CPP標題[問題] 關於 class 的賦值、建構...
::class 在 WATT.ASIA Instagram 的精選貼文
2021-10-01 07:11:36
. 🦠The real expert to getting your car sparkling clean? ✨ WATT about a professional with solid 30-year car-washing experience, @autobeautyhk knows ho...
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C++ / GCC
問題(Question):
幾個關於C++程式運作的機制
Q1: 如果class的某個建構式, 所有引數都有給預設值, 它是否就是預設建構式 ?
Q2: 如果函式宣告與實作分開, 引數的預設值只要在宣告式給就好了 ?
Q3: class 內宣告 friend 函式, 則整個 class 都變成該函式的作用域嗎 ?
Q4: 如果對 class object 以 built-in type 賦值, 會發生什麼事 ?
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <iostream>
#include <string>
using namespace std;
class ComplexNum{
public:
ComplexNum(double=0, double=0); // Q1 & Q2
void set(double r, double i){ real=r; imag=i;}
void print(ostream& out){ out << "the complex = " << *this;} // Q3
private:
string noUseString;
int noUseInt;
double real;
double imag;
friend ostream& operator<<(ostream&, const ComplexNum&); // Q3
};
ComplexNum::ComplexNum(double r, double i) : real(r), imag(i) {}
ostream& operator<<(ostream& out, const ComplexNum& c)
{
out << c.real << " + " << c.imag << "i";
return out;
}
int main()
{
ComplexNum c1;
ComplexNum c2=10; // Q4
cout << c1 << endl;
cout << c2 << endl;
c1.set(3,4);
c1.print(cout);
return 0;
}
補充說明(Supplement):
最近遇到的一些問題
感謝各位幫忙 !!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.221.54
我本來也這樣想
但是很神奇的 GCC 可以跑 而且連個警告都沒有
c2 印出來結果是 10 + 0i
我就很納悶了...
※ 編輯: cory8249 來自: 140.114.221.54 (06/17 18:05)