建構函式的乙個小問題

2021-06-27 11:10:08 字數 583 閱讀 1984

// 精簡過的**,兩個建構函式如下:

******_string::******_string()

******_string::******_string(int n)

如果我這樣呼叫:

******_string s0 = 'a';

cout << endl << "s0 = "<< s0 << "|||" << endl;

列印出97個0, 在vc上除錯發現呼叫的是******_string::******_string(int n)建構函式

如果這樣呼叫:

******_string s0;

s0 = 'a';

cout << endl << "s0 = "<< s0 << "|||" << endl;

則呼叫賦值操作,輸出為 a

開始很納悶,於是翻書補課,發現如果在定義時給變數賦初值,此時的賦值操作實際上是初始化操作,即呼叫建構函式而非賦值操作符(見c++ primer2.2.3)。

根據c語言定義,'a'為int型別,因此呼叫的是******_string::******_string(int n)建構函式。

乙個小問題

error c2679 binary no operator defined which takes a right hand operand of type class smanip int or there is no acceptable conversion 除錯了好久,就是找不出問題在哪。...

乙個小問題。

drop table student create table student sno number 10 sname varchar2 10 sage int insert into student values 1,aa 21 insert into student values 1,aa 21...

乙個小問題

設機器字長w ww位元,u w w u cu w,w uc u w,w uc。將w ww分為c cc個連續長度為u uu位元的區間,稱為u uu區間。實現操作 對於乙個機器字x xx,如果乙個u uu區間非0,則將區間最右bit置1,其餘為0。要求演算法時間為o 1 o 1 o 1 考慮異或操作。對...