c++ primer 学习记录(2)

#include<iostream>
#include<vector>
using namespace std;

typedef double Money;

string bal;

class Account{
public:
    typedef double Money;
    //编译器会通过,但是这样是错的
    //编译器只会从类里面找,再到外面去找;类外声明的类型名字在类内不能重新声明
    Money balance() {return bal;}
private:
    Money bal;
};
/////////////////////////////////////////////////
struct X{
    friend void f() { 
        //友元函数可以定义在类的内部
    }
    X() {f(); }//错误,f()未初始化
    void g();
    void h();
}
/////////////////////////////////////////////////////////
class Screen{
    friend class Window_mgr;
    friend void Window_mgr::clear(ScreenIndex);
    //首先定义window_mgr类,然后其中声明clear函数,但不能定义
    //节虾类定义Screen类,和友元函数声明
    //最后定义clear,此时才可以使用Screen的成员

    //friend指定友元类可以让友元类来调用Screen的任意成员
}
//////////////////////////////////////////////
class Window_mgr{
public:
    using ScreenIndex = vector<Screen>::size_type;
    //vector<T> v 初始化一个空向量,默认初始化
    //vector<T> v2(v) 拷贝初始化
    //vector<T> v3(n,val) 初始化为n个相同元素的向量,重复初始化
    //vector<T> v4(n) 初始化一个包含n个元素的向量
    //vector<T> v5={a,b,c}列表初始化
    //vector<T> v6{a,b,c}列表初始化等价形式
    //v.push_back向向量尾部添加元素
    //v.empty() 返回bool类型的值,用于判断v中是否不含任何元素
    //v.size() 返回int类型的值,用于判断元素的个数
    //v[i] 返回引用类型的值,用于给出第i个元素的引用
    //v1 = v2 替换初始化
    //v1 == v2 判断两个向量的元素值和元素个数是否相同
    //decltype ()用于返回括号中运算符的存储类型
    //v[i] 要使用索引,首先得让v中有元素,否则会出错
    //while(cin >> a)
    void clear(ScreenIndex);

};

发布了2 篇原创文章 · 获赞 0 · 访问量 39

猜你喜欢

转载自blog.csdn.net/AIGNl/article/details/104355275