C++學習筆記之 初識與概述
阿新 • • 發佈:2020-10-18
概述
C++ = C + 面向物件程式設計 + 泛型程式設計
C語言是面向過程的,C++是面向物件的
初識
Hello world
#include <iostream> // 匯入庫,不需要.h字尾
// iostream 即標準輸入輸出流
int main()
{
std::cout << "Hello world\n"; // 這裡留到後面講
return 0;
}
Hello world
對比
C語言Hello world
#include <stdio.h> int main() { printf("Hello world\n"); return 0; }
彙編程式碼:
.file "test.c" .text .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr" LC0: .ascii "Hello world\0" .text .globl _main .def _main; .scl 2; .type 32; .endef _main: LFB13: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 andl $-16, %esp subl $16, %esp call ___main movl $LC0, (%esp) call _puts movl $0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc LFE13: .ident "GCC: (MinGW.org GCC Build-2) 9.2.0" .def _puts; .scl 2; .type 32; .endef
共計31行
C++
.file "main.cpp" .text .section .rdata,"dr" __ZStL19piecewise_construct: .space 1 .lcomm __ZStL8__ioinit,1,1 .def ___main; .scl 2; .type 32; .endef LC0: .ascii "Hello world\12\0" .text .globl _main .def _main; .scl 2; .type 32; .endef _main: LFB1511: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 andl $-16, %esp subl $16, %esp call ___main movl $LC0, 4(%esp) movl $__ZSt4cout, (%esp) call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc movl $0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc LFE1511: .def ___tcf_0; .scl 3; .type 32; .endef ___tcf_0: LFB1984: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $8, %esp movl $__ZStL8__ioinit, %ecx call __ZNSt8ios_base4InitD1Ev leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc LFE1984: .def __Z41__static_initialization_and_destruction_0ii; .scl 3; .type 32; .endef __Z41__static_initialization_and_destruction_0ii: LFB1983: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $24, %esp cmpl $1, 8(%ebp) jne L6 cmpl $65535, 12(%ebp) jne L6 movl $__ZStL8__ioinit, %ecx call __ZNSt8ios_base4InitC1Ev movl $___tcf_0, (%esp) call _atexit L6: nop leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc LFE1983: .def __GLOBAL__sub_I_main; .scl 3; .type 32; .endef __GLOBAL__sub_I_main: LFB1985: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $24, %esp movl $65535, 4(%esp) movl $1, (%esp) call __Z41__static_initialization_and_destruction_0ii leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc LFE1985: .section .ctors,"w" .align 4 .long __GLOBAL__sub_I_main .ident "GCC: (MinGW.org GCC Build-2) 9.2.0" .def __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; .scl 2; .type 32; .endef .def __ZNSt8ios_base4InitD1Ev; .scl 2; .type 32; .endef .def __ZNSt8ios_base4InitC1Ev; .scl 2; .type 32; .endef .def _atexit; .scl 2; .type 32; .endef
共計104行
結論:C++在編譯速度和執行速度上都會相對的慢於C語言