C++日常笔记(6)

来源:互联网 发布:淘宝0秒付款 编辑:程序博客网 时间:2024/06/06 03:24

1.委托构造函数
Class中的构造函数可以使用自身类中的其它构造函数来完成其构造功能,比如:

#include <iostream>using namespace std;class A{    int data;public:    A() : A(2){cout<<1<<endl;}    A(int data):data(data){cout<<2<<endl;}};int main(){    A a;    return 0;}code output:21

从结果显然可以看出,A()委托A(int data)进行构造,A(int data)函数执行完毕后,才执行A()函数体中的内容,此外,委托构造函数不能再利用初始化器初始化其他数据成员,注意不能递归委托。

2.std::endl and std::flush and std::internal

std::endl(std::cout) == std::cout<<std::endl

std::endl is redundant when used with std::cout because any input from std::cin, or output to std::cerr, program termination forces a call to std::cout.flush()

关于std::internal:

#include <iostream>#include <iomanip>#include <locale>int main(){    std::cout << "Left fill:\n" << std::left << std::setfill('*')    << std::setw(12) << -1.23  << '\n'    << std::setw(12) << std::hex << std::showbase << 42 << '\n';    std::cout << "Internal fill:\n" << std::internal    << std::setw(12) << -1.23  << '\n'    << std::setw(12) << 42 << '\n';    std::cout << "Right fill:\n" << std::right    << std::setw(12) << -1.23  << '\n'    << std::setw(12) << 42 << '\n';    std::cout << "Right fill:\n" << std::right<<std::internal    << std::setw(12) << -1.23  << '\n'    << std::setw(12) << 42 << '\n';}code output:Left fill:-1.23*******0x2a********Internal fill:-*******1.230x********2aRight fill:*******-1.23********0x2a-*******1.230x********2aProgram ended with exit code: 0

3.Class

类中的成函数可以仅声明而不定义,这是合法行为,但是一旦调用该成员函数,则会出错。

static数据成员可以作为默认实参,且其类型可以为不完全类型,即下列代码合法:

class A { static A data; };

此外,一个类不能派生自己本身

资料来源:
http://en.cppreference.com/w/