零基础C++入门第一天

由于C++跟JAVA相似的地方太多啦,入门的话除了函数跟指针鄙人还没有看到任何值得记录的内容,因此第一天的记录就只有函数跟指针。

1. 函数

没有类似java的public private访问控制关键字,只是简单的返回值类型 + 函数名称。

项目入口是一个简单的main函数:

int main( ){

  return 0;

}

如果要打印简单的字符串Hello World:

#include <iostream>

using namespace std;

int main(){
  
  string helloWorld = "Hello World";  
  cout <<"Hello World" << endl;
  cout <<helloWorld<< endl;      
  
  return 0;  
}

上面的代码cout应该读成c(C++/C) out(输出),endl应该读成end line。而<<似乎是输出专用的符号,相对>>用作输入符号。上面的两行cout开头代码均打印 Hello World。

如果要使用自定义函数:

如果不在使用函数的main方法前声明或者定义函数,那么在main函数里将无法使用add跟subtract函数。

下面的代码黄色的是声明函数的语法(暂且这么理解),虽然在main函数下面完整定义了add函数但是不事先声明的话,直接在main里面写add会提示找不到这个函数。如果需要引用其他文件的函数,除了写#include文件名.h也是需要将该文件中需要用到的函数在main函数上方声明,看上去很像是一个JAVA的抽象方法(因为没有函数体)。

下面的绿色代码是在main函数前定义函数,这样也可以避免main函数找不到方法函数的情况。

#include <iostream>

using namespace std;

int add(int a, int b);

int subtract(int a, int b){
 
  return a-b;
}

int main(){
  add(1,1);
  subtract(2,1);    
  
}

int add(int a, int b){
  return a+b;  
}

 

2. 指针

int main(){
  int age = 24;
int *pAge = &age; cout
<< &age<<endl; ======> 输出0x7ffeef321a88 ===>意味着&age是一个指针
cout<< *&age<<endl; =====> 输出24 ===>使用*取出指针所指向的int值
cout<< *pAge<<endl;======> 输出24 ===>使用*取出指针所指向的int值
cout<< pAge<<endl; ======> 输出0x7ffeef321a88 ===>意味着pAge是一个指针

return 0; }

 

3. 类

类是数据以及修改数据的方法的图纸。


class Book{


public:
int pages;
string title;
string author;

Book(){
pages = 0;
title = "unknown";
author = "anonymous";
}

Book(int pages,string author,string title){
cout<< "Creating a new book!"<<endl;
Book::pages = pages;
Book::author = author;
Book::title = title;
}

bool authorIsSteve(){
if(author=="Steve"||author=="steve"){
return true;
}
return false;
}

int getPages() const {
return pages;
}

void setPages(int pages) {
Book::pages = pages;
}

const string &getTitle() const {
return title;
}

void setTitle(const string &title) {
Book::title = title;
}

const string &getAuthor() const {
return author;
}

void setAuthor(const string &author) {
Book::author = author;
}



};
 

跟JAVA一样也有构造方法(只在拿着图纸创建真正的Book的时候才会被调用的函数)

与JAVA以及JAVASCRIPT不同的是没有this dot了,取而代之的是类名::,上面的是Book::title取代了this.title

除此之外让人奇怪的是const string &的写法

 

4. 继承

class FancyBook : public Book{
  public:
    string authorIsSteve(){
        if(getAuthor()=="Steve"||getAuthor()=="steve"){
            return "yes";
        }
        return "no";
    }
};

上面是一个简单的继承Book类并且重写authorIsSteve函数的新类。

posted @ 2020-07-22 06:58  波-尔  阅读(95)  评论(0)    收藏  举报